package com.h3c.nem.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.h3c.nem.enums.IdTypeEnum;
import com.h3c.nem.enums.OfferWorkerFillStageEnum;
import com.h3c.nem.enums.OfferWorkerOfferStatusEnum;
import com.h3c.nem.enums.OfferWorkerStatusEnum;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 预备员工基本信息历史数据备份
 * @TableName tb_offer_worker_his
 */
@TableName(value ="tb_offer_worker_his")
@Data
public class TbOfferWorkerHis implements Serializable {
    /**
     * 预备工号
     */
    @TableId
    private String workerId;

    /**
     * 北森来的员工在北森系统的编号
     */
    private String beiSenId;

    /**
     * 正式员工工号
     */
    private String regularWorkerId;

    /**
     * 域账号
     */
    private String domainAccount;

    /**
     * 姓名
     */
    private String workerName;

    /**
     * 姓名（拼音）
     */
    private String namePinyin;

    /**
     * 姓（拼音）
     */
    private String firstPinyin;

    /**
     * 名（拼音）
     */
    private String lastPinyin;

    /**
     * 曾用名
     */
    private String oldName;

    /**
     * 证件类型：身份证；护照；（直接存名称）
     */
    private IdTypeEnum certType;

    /**
     * 证件号码
     */
    private String certNo;

    /**
     * 生日
     */
    private Date birthday;

    /**
     * 电话号码
     */
    private String phoneNo;

    /**
     * 邮箱地址
     */
    private String email;

    /**
     * 性别：男/女（直接存名字）
     */
    private String sex;

    /**
     * 通讯地址（家庭现地址）
     */
    private String contactAddress;

    /**
     * 政治面貌
     */
    private String politicalLandscape;

    /**
     * 入党日期（仅入党时才需要填）
     */
    private Date addPartyDate;

    /**
     * 国籍
     */
    private String nationality;

    /**
     * 籍贯
     */
    private String nationPlace;

    /**
     * 国籍编码
     */
    private String nationalityCode;

    /**
     * 户口城市
     */
    private String houseHoldCity;

    /**
     * 户口详细地址 默认与家庭现住址一致
     */
    private String houseHoldAddress;

    /**
     * 户口性质
     */
    private String houseHoldCode;

    /**
     * 民族
     */
    private String nation;

    /**
     * 参加工作日期（社会工作日期）
     */
    private Date firstWorkDate;

    /**
     * 档案所在单位
     */
    private String archiveOrg;

    /**
     * 项目制员工：1是 2否
     */
    private String projectWorkerFlag;

    /**
     * 人事范围编码
     */
    private String personnelRangeCode;

    /**
     * 人事范围
     */
    private String personnelRange;

    /**
     * 人事子范围
     */
    private String subPersonnelRange;

    /**
     * 旧工号
     */
    private String oldWorkerId;

    /**
     * 工作履行地
     */
    private String workCity;

    /**
     * 外派工作地
     */
    private String outerCity;

    /**
     * 有无配偶标志：1有/0无
     */
    private String spouseFlag;

    /**
     * 配偶名称
     */
    private String spouseName;

    /**
     * 结婚日期
     */
    private Date marriageDate;

    /**
     * 配偶电话
     */
    private String spousePhone;

    /**
     * 配偶住址
     */
    private String spouseAddress;

    /**
     * 配偶工作单位
     */
    private String spouseOrg;

    /**
     * 参保地
     */
    private String insuredCity;

    /**
     * 外国永久居留权:拥有/没有
     */
    private String foreignResidency;

    /**
     * 外国永久居留权国家
     */
    private String foreignResidencyCountryCode;

    /**
     * 班次
     */
    private String workOrder;

    /**
     * 是否刷卡：免刷卡/非免刷卡
     */
    private String signInFlag;

    /**
     * 弹性班次：弹性班次/非弹性班次
     */
    private String flexibleFlag;

    /**
     * 考勤方式：手工考勤/不考勤
     */
    private String checkWorkType;

    /**
     * 用户类型：研发/非研发
     */
    private String researchFlag;

    /**
     * 办公区域：研发区/非研发区
     */
    private String workLocation;

    /**
     * 一级部门名称
     */
    private String dept1name;

    /**
     * 二级部门名称
     */
    private String dept2name;

    /**
     * 三级部门名称
     */
    private String dept3name;

    /**
     * 四级部门名称
     */
    private String dept4name;

    /**
     * 部门名称全链路
     */
    private String deptNameChain;

    /**
     * 是否需要签署竞业协议  1是 2否
     */
    private String needSignCompetition;

    /**
     * 是否已签竞业协议：已签署/未签署
     */
    private String competitionSignFlag;

    /**
     * 签署的竞业限制期限:6个月-12个月/其他
     */
    private String competitionPeriod;

    /**
     * 竞业限制公司名单:标准版“H3C01”/云智版“H3C02”
     */
    private String competitionCompany;

    /**
     * 竞业限制协议签署日期
     */
    private Date competitionSignDate;

    /**
     * 竞业限制补偿标准:解除或者终止劳动关系前十二个月平均工资的30%/其他
     */
    private String competitionRewardStandard;

    /**
     * 岗位编码
     */
    private String postId;

    /**
     * 岗位名称
     */
    private String postName;

    /**
     * 职级等级
     */
    private String jobLevel;

    /**
     * 职级职等
     */
    private String jobGrade;

    /**
     * 是否高才岗位 1是 2否
     */
    private String hignTalentPostFlag;

    /**
     * 是否国际化人才 1是 2否
     */
    private String internationalTalentFlag;

    /**
     * 是否特批：特批/非特批
     */
    private String specialApprovalFlag;

    /**
     * 招聘项目名称
     */
    private String offerProjectName;

    /**
     * 特批类型
     */
    private String specialApprovalType;

    /**
     * 特批说明
     */
    private String specialApprovalNote;

    /**
     * 招聘来源：猎头；内部推荐；
     */
    private String recruitSource;

    /**
     * 推荐人姓名工号
     */
    private String recommendWorkerId;

    /**
     * 涉密人员
     */
    private String securityUserFlag;

    /**
     * 数据来源：北森； BPM;
     */
    private String dataSource;

    /**
     * 入司方式：社会招聘；应届毕业生(校招); 应届毕业生(社招)
     */
    private String inType;

    /**
     * 上家公司离职日期
     */
    private Date lastLeaveDate;

    /**
     * 合同类型（通过导入或编辑设置）
     */
    private String contractType;

    /**
     * 合同开始日期（通过导入或编辑设置）
     */
    private Date contractBeginDate;

    /**
     * 合同结束日期（通过导入或编辑设置）
     */
    private Date contractEndDate;

    /**
     * 试用期月数（通过导入或编辑设置）
     */
    private Integer probationMonth;

    /**
     * 员工申请入职日期
     */
    private Date applyReportDate;

    /**
     * 申请变更入职日期原因
     */
    private String applyChangeReason;

    /**
     * 计划入职日期
     */
    private Date planReportDate;

    /**
     * Offer发放日期
     */
    private Date offerDate;

    /**
     * 实际入职日期（生成正式工号时，输入的日期）
     */
    private Date joinDate;

    /**
     * offer ID（HRSS老数据通过offer ID关联）
     */
    private String offerId;

    /**
     * 入职状态
     */
    private OfferWorkerStatusEnum workerStatus;

    /**
     * 填写进度:0未填写 1已登录待确认文件 2 填写中；3 填写完成；
     */
    private OfferWorkerFillStageEnum fillStage;

    /**
     * 直接上级姓名/工号
     */
    private String directManager;

    /**
     * 导师姓名/工号
     */
    private String teacherInfo;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 更新人姓名/工号
     */
    private String updatorInfo;

    /**
     * 是否保存过  0北森同步过来的原始数据  1保存过了
     */
    private Integer alreadySave;

    /**
     * 登录密码
     */
    private String preparationPassword;

    /**
     * 员工自我介绍
     */
    private String workerIntroduce;

    /**
     * 直属部门ID
     */
    private String directDeptId;

    /**
     * 线下签署操作人
     */
    private String offlineOperator;

    /**
     * 线下签署时间
     */
    private Date offlineTime;

    /**
     * 人事子范围编码
     */
    private String subPersonnelRangeCode;

    /**
     * offer状态 0未发offer  1已发offer  2接受offer  3拒绝offer
     */
    private OfferWorkerOfferStatusEnum offerStatus;

    /**
     * 项目制员工工作地
     */
    private String projectWorkCity;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}